package br.com.busgpsapp.webservice;

import com.google.gson.Gson;

import br.com.busgpsapp.bean.Result;
import br.com.busgpsapp.util.Constants;

public class OnibusREST
{

    /**
     * 
     * Obtem todas as posicoes de um onibus a partir da linha.
     * 
     * @param id
     * @return
     * @throws Exception
     */
    public Result getResultByBusNumber(String id) throws Exception
    {
        StringBuilder url = new StringBuilder(Constants.HOST_BASE);
        url = url.append(Constants.PATH_BY_BUS_NUMBER).append(id);
        return getData(url.toString());
    }

    /**
     * 
     * Obtem todas as posicoes de um onibus a partir de sua ordem.
     * 
     * @param id
     * @return
     * @throws Exception
     */
    public Result getResultByBusID(String id) throws Exception
    {
        StringBuilder url = new StringBuilder(Constants.HOST_BASE);
        url = url.append(Constants.PATH_BY_BUS_ID).append(id);
        return getData(url.toString());
    }

    /**
     * 
     * Obtem todas as posicoes de todos os onibus.
     * 
     * @param id
     * @return
     * @throws Exception
     */
    public Result getAllPosition() throws Exception
    {
        StringBuilder url = new StringBuilder(Constants.HOST_BASE);
        url = url.append(Constants.PATH_ALL_POSITIONS);
        return getData(url.toString());
    }

    /**
     * 
     * Obtem todas as posicoes de um onibus a partir da linha
     * 
     * @param id
     * @return
     * @throws Exception
     */
    private Result getData(String url)
    {
        System.out.println(url);
        String resposta = WebServiceClient.get(url);

        if (resposta != null)
        {
            return new Gson().fromJson(resposta, Result.class);
        }
        return new Result();
    }

}
